package com.framework.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.framework.entity.flow.FlowAccount;
import com.framework.entity.flow.FlowVipCashBack;
import com.framework.view.FlowAccountView;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 功能描述: 账户流水
 *
 * @author ck
 * @date 2018/9/6 13:54
 */
public interface FlowAccountDao extends BaseMapper<FlowAccount> {
	/**
	 * 查询列表 带分页
	 * @param flowAccount
	 * @param pageNo
	 * @return
	 */
	List<FlowAccount> queryFlowAccountList(@Param("ex") FlowAccount flowAccount, @Param("pageNo") Integer pageNo);

	/**
	 * 查询累计收益走势图 近期6个月的数据
	 * @param agentId 所属代理商
	 * @param startMonth 开始时间
	 * @param endMonth 结束时间
	 * @return
	 */
	List<Map<String,Object>> queryMonthProfitSumList(@Param("agentId") Long agentId, @Param("startMonth") String startMonth, @Param("endMonth") String endMonth);

	/**
	 *根据类型、收支类型、代理商id查询
	 * @param agentId 代理商id
	 * @param accountTypes
	 * @param supportType 收支类型
	 * @return
	 */
	BigDecimal queryAmountSumByAgentId(@Param("agentId") Long agentId, @Param("accountTypes") String accountTypes, @Param("supportType") Long supportType);

	/**
	 * 其它类型
	 * @param agentId
	 * @return
	 */
	BigDecimal queryOtherAmount(@Param("agentId") Long agentId);
	/**
	 * 其它类型列表
	 * @param agentId
	 * @return
	 */
	List<FlowAccountView> queryOtherAmountList(@Param("agentId") Long agentId);

	/**
	 * 查询其它类型的终端号
	 * @param id  主键id
	 * @param state 类型
	 * @return
	 */
	String queryOtherSn(@Param("id") String id,@Param("state") Integer state);

	/**
	 * 查询个人流水明细
	 * @param agentId
	 * @param start
	 * @param end
	 * @return
	 */
	Map<String, Object> queryAgentAccountInfo(@Param("agentId") Long agentId,@Param("start") Date start,@Param("end") Date end);

	/**
	 * 根据条件查询个人的收益详情
	 * @param params
	 * @return
	 */
	List<Map<String, Object>> queryFlowAccountByAgentId(Map<String, Object> params);

	/**
	 * 根据条件查询个人的其他收益详情
	 * @param params
	 * @return
	 */
	List<Map<String, Object>> queryOtherFlowAccountByAgentId(Map<String, Object> params);

	/**
	 * 添加vip激活流水
	 * @param flowVipCashBack
	 */
	void addFlowVip(@Param("ex") FlowVipCashBack flowVipCashBack);

	/**
	 * 查询激活
	 * @param sn
	 * @param createTime
	 * @return
	 */
	FlowVipCashBack queryFLowVip(@Param("sn") String sn,@Param("createTime") Date createTime);

	FlowVipCashBack queryFLowVipByVipTime(@Param("sn") String sn,@Param("doVipTime") Date doVipTime);
}
